package org.huangrui.juc.source.syncup;

/**
  * 锁消除
  * 从JIT看相当于无视角度它，synchronized (o)不存在了,
  * 这个锁对象并没有被共用扩散到其它线程使用，
  * 极端的说就是根本没有加这个锁对象的底层机器码，消除了锁的使用
  * @Author hr
 * @Create 2024-04-21 20:42
 */
public class T02_LockClear {
    static Object objectLock = new Object();
    public void m1(){
        /*synchronized (objectLock){
            System.out.println("-----hello LockClearUPDemo");
        }*/

        //锁消除问题，JIT编译器会无视它 ，synchronized(o),每次new出来的，不存在了，非正常的。
        Object o = new Object();
        synchronized (o){
            System.out.println("-----hello LockClearUPDemo"+"\t"+o.hashCode()+"\t"+objectLock.hashCode());
        }
    }

    public static void main(String[] args) {
        T02_LockClear lockClear = new T02_LockClear();

        for (int i = 1; i <=10; i++) {
            new Thread(() -> {
                lockClear.m1();
            },String.valueOf(i)).start();
        }
    }
}
